让Chrome/Firefox轻松兼容老旧的ActiveX,让访问硬件外设变得更友好 您所在的位置:网站首页 chrome 不兼容 让Chrome/Firefox轻松兼容老旧的ActiveX,让访问硬件外设变得更友好

让Chrome/Firefox轻松兼容老旧的ActiveX,让访问硬件外设变得更友好

2024-07-13 12:11| 来源: 网络整理| 查看: 265

因为不常来,所以无法及时回复,看到很多人需要交流,请加QQ群:1041052470【JS调用ActiveX解决方案】

同学公司的医院系统是B/S架构的,之前为了兼容各种二代证读卡器(神思、握奇、精纶等)、IC卡读卡器(明华等)、还有各地神奇的健康卡,还有一个奇葩的ActiveX打印控件Lodop,还要支持汉王手写板签名,还要兼容客户的Windows XP,还要照顾前端的js框架......,为了兼容这一切的一切,不得不禁锢在IE8,然而,依然是各种的不兼容,不稳定,不方便......

本着让世界变得更美好的高尚信念,我帮他们设计了一套解决方案,并帮他们开发了出来,运行多时,还算稳定。

下面,就把系统实现原理和思路简单聊聊:

首先是,解决ActiveX兼容的问题。因为Chrome/Firefox不再支持XPCOM架构,所以写一个浏览器插件来解决这个问题并不是一个可行思路。所以,我用Delphi写一个单独的容器进程调用IE内核来运行各种ActiveX,然后开http接口来和Chrome/Firefox交互,我们暂时给这个容器进程起名叫WebAdapter,里面分别定义二代证、IC卡、健康卡等各种接口,每种接口把硬件类型传递过去。Chrome/Firefox端可以通过JSONP/XMLHttpRequest/WebSocket三种方式来通讯了。

XMLHttpRequest接口通讯是这个样子的:

然后,WebAdapter根据接口名getIdCardInfo调用相应的js文件进行后续处理:

getIdCardInfo.js中有同名函数,调用,然后进行根据硬件类型的type参数,再调用getIdCardObj()和getIdCardData()进行硬件的访问和数据的包装,看代码:

用js调用ActiveX:

 并把不同硬件厂商的数据包装成统一的格式返回:

返回的数据:

嗯,大概就是这个意思了,文字不够,代码来凑。

配合一个定制的Chrome内核的浏览器,功能更强。

时间不够了,今天先到这里吧,哈哈

 

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有